package com.luoani;

import org.testng.annotations.Test;

import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class StreamDemo {
    public static void main(String[] args) {
        List<String> names = new ArrayList<>();
        names.add("张三");
        names.add("李四");
        names.add("王五");
        names.add("赵六");
        names.add("田七");
        names.add("田七1");
        names.add("张三2");
        names.add("李四2");
        names.add("王五2");
        names.add("赵六2");
        names.add("张无忌");

        List<String> list1 = new ArrayList<>();
        //遍历name集合
        names.forEach(name -> {
            if (name.startsWith("张")) {
                list1.add(name);
            }
        });
        List<String> list2 = new ArrayList<>();
        list1.forEach(name -> {
            if (name.length() == 3) {
                list2.add(name);
            }
        });
        list2.forEach(System.out::println);

        System.out.println("-----------------------");
        //1.获取集合的流对象Stream对象
        //2.筛选符合条件的元素
        //3.终结方法
        names.stream()
                .filter(s -> s.startsWith("张"))
                .filter(s -> s.length() == 3)
                .forEach(System.out::println);
    }

    @Test
    public static void test1() {
        List<Integer> list = new ArrayList<>();
        list.add(1);
        list.add(2);
        list.add(3);
        list.add(4);
        list.add(5);
        list.add(6);
        list.add(7);
        list.add(8);
        list.add(9);


        //最后调用收集方法
        //List<Integer> list1 = list.stream().filter(integer -> integer % 2 == 0).collect(Collectors.toList());
        List<Integer> list1 = list.stream().filter(integer -> integer % 2 == 0).toList();
        System.out.println(list1);
    }
}
//    public void test2(){
//        List<String> list = new ArrayList<>();
//        list.add(
